20190809 灰度
灰度流程
-
确定涉及哪些后端、前端工程、gm_task 改动、定时脚本改动
前端: ma station
后端 WEB 服务: gm_service gm_web_stock gm_management gm_async_task gm_server_order
后端 gm_task:
-
变更1
- 是否修改了 gm_task git 仓库中的代码或配置:否
- gm_task 脚本类型(新增脚本/修改已有脚本):修改已有脚本
-
是否修改了 gm_task git 仓库中的代码或配置:是
- gm_task 脚本类型(新增脚本/修改已有脚本):新增脚本
- batch_export_customer_list_path /data/www/manage/release/20190809/tools/celery_tasks/customerlist.py batch_edit_customer_path /data/www/manage/release/20190809/tools/celery_tasks/edit_customer_export.py batch_update_customer_path /data/www/manage/release/20190809/tools/celery_tasks/batch_update_customer.py batch_export_customer_finance_path /data/www/manage/release/20190809/tools/celery_tasks/customer_finance.py op_log_export_path /data/www/station/release/20190809/tools/celery_tasks/op_log_export.py sync_order_sku_price_new_path /data/www/station/release/20190809/tools/celery_tasks/async_order_sku_price_new.py batch_change_supplier_purchaser_path /data/www/stock/release/20190809/tools/celery_tasks/batch_change_supplier_purchaser.py inventory_template_export_path /data/script/gm_script/feature/small_demand/tools/celery_tasks/inventory_template_export.py
后端 gm_script feature/small_demand 分支 a2236a5f5759f8c23f3e6e266b514ea9e2003936
-
-
从 develop 分支中切出 release/YYYYMMDD 分支
- 灰度一个不存在的 group id
- 部署 gm_task
- clone 新的 gm_task 分支 done
- 部署 web 服务分支 done
- 修改 gm_task 分支配置 done
- 修改 gm_task 队列配置(gm_task_queue) done
- 使用 tmux 启动服务 done
- 修改 web 服务的配置,改动 queue_name
- 部署 gm_script
- 灰度账号(先灰度测试账号,再灰度真实客户)
- 刷数据(切流量前需要刷的脚本)
- 修改 gm_task 脚本中的 group ids
- 修改 gm_script 脚本中的 group ids
- 使用发布脚本灰度账号
- 刷数据(切流量后需要刷的脚本)
- 等待测试测试(仅灰度测试账号时需要)
- 在钉钉群里通知
全量流程
-
查看之前灰度的ID
gmdeploy list -p 模块名称 gmdeploy prerelease -u name ID # 在全量机器部署分支服务,
-
合 master 代码
到所有模块git目录里面, 将所有模块master内容合并到release分支
git checkout master git pull git checkout release/20190715 git merge master git push
回到脚本中yes确认完成
-
跟前端确认分支是否要进行rebase到master,等他们操作完成
确认是否要执行刷数据脚本(刷全部用户数据,跟后端)
gmdeploy release -u name ID #将用户流量全部切换到分支服务上 切换到master分支 meger到master git pull git merge 分支名称 git push 切换到develop分支 meger到develop分支 git checkout develop git pull git merge master git push
yes 确认完成操作
-
刷数据(切流量前需要刷的脚本)
- 修改 gm_task 脚本中的 group ids
- 修改 gm_script 脚本中的 group ids
- gmdeploy release
- 刷数据(切流量后需要刷的脚本)
- 通知前端全量更新代码 #发布全量操作
- gmdeploy complete -u name ID #等前端操作完成之后,软链接到模板工程里面
- 到trello将模块拖到己全量看板
-----------------
# 需求发布规范
每周一三五下午四点前合好代码,在 trello 中按照下面的模版填写发布单
## 需求发布单模版 V1
### 涉及Web后端工程
提供 Web 服务的工程的服务。这类工程都有 develop 分支,**Reviewer** 需要使用 GitLab 中把代码合到 develop 分支。
由于 Reviewer 一般事情比较繁忙,可能忘记了合代码。**Developer** 需要自行确定代码是否合并到了 develop 分支,由 Developer(而不是 Reviewer)对代码未合并造成的事故负责。
这里只需要写工程名,不需要填写分支。
### 涉及前端工程
提供前端工程的工程名。由前端对代码的合并负责。
### 修改到的功能
(包括但不限于:订单、支付、分拣、配送、采购、进销存、商品库)
### 刷数据脚本
刷数据脚本是在灰度以及全量的时候需要执行的脚本,用于批量修改数据。
每一个脚本需要提供以下信息:
1. 脚本所在工程:
2. 脚本的相对路径:
3. 脚本的使用方式:
4. 在切流量前还是切流量后运行脚本:
5. 脚本是否可以重复刷某一个 Group:
6. 其他注意事项
### gm_task 改动
gm_task 里包含了所有 celey 的脚本
1. 是否修改了 gm_task git 仓库中的代码或配置:
2. gm_task 脚本类型(新增脚本/修改已有脚本):
3. 脚本在 gm_task 中配置的名字:
4. 脚本路径
5. 如果是修改已有脚本,是否需要从全量的脚本中剔除灰度的客户
### gm_script 改动
gm_script 中的脚本使用 crontab 定时调用
1. 定时脚本类型(新增脚本/修改已有脚本):
2. 如果是修改已有脚本,是否需要从全量的脚本中剔除灰度的客户:
3. 如果是新增脚本,crontab 命令是什么:
### 其他需要执行的修改
------
例子:
需求发布单模版 V1
涉及Web后端工程
gm_service, gm_web_stock, gm_server_order
涉及前端工程
station, mes
修改到的功能
订单和支付
刷数据脚本
- 脚本所在工程 gm_service
- 脚本的相对路径 tools/tmp/abcdefg.py
- 脚本的使用方式: python3 ./tools/tmp/abcdefg.py -g 111,222,333 # 刷部分groups python3 ./tools/tmp/abcdefg.py --all # 刷所有客户
- 在切流量前还是切流量后运行脚本:切流量后执行
- 脚本是否可以重复刷某一个 Group:可以
-
其他注意事项:无
-
脚本所在工程:order
- 脚本的相对路径:tool/xyz.py
- 脚本的使用方式: 修改脚本文件中的 GROUP_IDS 变量,然后执行脚本。
- 在切流量前还是切流量后运行脚本:都要
- 脚本是否可以重复刷某一个 Group:可以
- 其他注意事项:这个脚本 可能会运行数个小时,最好提前半天运行脚本。
gm_task 改动
- 是否修改了 gm_task git 仓库中的代码或配置:是
- gm_task 脚本类型(新增脚本/修改已有脚本):新增脚本
- 脚本在 gm_task 中配置的名字:export_purchase_analyse_path
- 脚本路径:/data/www/stock/gm_web_stock/tools/celery_tasks/export_purchase_analyse.py
-
如果是修改已有脚本,是否需要从全量的脚本中剔除灰度的客户:需要
-
是否修改了 gm_task git 仓库中的代码或配置:否
- gm_task 脚本类型(新增脚本/修改已有脚本):修改已有脚本
- 脚本在 gm_task 中配置的名字:export_inner_transfer_log_path
- 脚本路径:/data/www/stock/gm_web_stock/tools/celery_tasks/export_inner_transfer_log.py
- 如果是修改已有脚本,是否需要从全量的脚本中剔除灰度的客户:需要
gm_script 改动
无
其他需要执行的修改
- 添加了新的日志目录,部署station和manage的机器上需有 /data/logs/celery_task/ 目录的存在. 否则station和manage会启动失败
- 为了解决 gm_task 线程变量中没有group_id导致灰度请求无法准确通过rmiclient准确请求灰度接口的情况, 在gm_task中写死了 group_id为 909090, 必须灰度该id